/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Practico1B.java
 *
 * Created on 17/04/2011, 21:25:45
 */

package com.matpala.practico1.b;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author matpala
 */
public class VentanaPractico1B extends javax.swing.JFrame {

	private static final long serialVersionUID = 1L;
	
	public VentanaPractico1B() {
		initComponents();
	}

	private void initComponents() {

		jLabel1 = new javax.swing.JLabel();
		txtLimiteInferior = new javax.swing.JTextField();
		jLabel2 = new javax.swing.JLabel();
		txtLimiteSuperior = new javax.swing.JTextField();
		jLabel3 = new javax.swing.JLabel();
		txtCantidadNumeros = new javax.swing.JTextField();
		cmdGenerar = new javax.swing.JButton();
		jScrollPane1 = new javax.swing.JScrollPane();
		tablaDatos = new javax.swing.JTable();
		cmdSalir = new javax.swing.JButton();
		jSeparator1 = new javax.swing.JSeparator();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setTitle("Practico1b");
		setMinimumSize(new java.awt.Dimension(415, 400));
		getContentPane().setLayout(null);

		jLabel1.setText("Limite inferior:");
		getContentPane().add(jLabel1);
		jLabel1.setBounds(12, 16, 92, 15);
		getContentPane().add(txtLimiteInferior);
		txtLimiteInferior.setBounds(135, 12, 52, 19);

		jLabel2.setText("Limite superior:");
		getContentPane().add(jLabel2);
		jLabel2.setBounds(12, 37, 98, 15);
		getContentPane().add(txtLimiteSuperior);
		txtLimiteSuperior.setBounds(135, 37, 52, 19);

		jLabel3.setText("Cantidad Numeros:");
		getContentPane().add(jLabel3);
		jLabel3.setBounds(12, 66, 119, 15);
		getContentPane().add(txtCantidadNumeros);
		txtCantidadNumeros.setBounds(135, 64, 52, 19);

		cmdGenerar.setText("Generar");
		getContentPane().add(cmdGenerar);
		cmdGenerar.setBounds(12, 119, 82, 25);

		tablaDatos.setBorder(javax.swing.BorderFactory.createEtchedBorder());
		datosTabla = new DefaultTableModel();
		datosTabla.addColumn("Numero");
		datosTabla.addColumn("Random");
		tablaDatos.setModel(datosTabla);

		jScrollPane1.setViewportView(tablaDatos);

		getContentPane().add(jScrollPane1);
		jScrollPane1.setBounds(193, 12, 194, 275);

		cmdSalir.setText("Salir");
		getContentPane().add(cmdSalir);
		cmdSalir.setBounds(305, 339, 82, 25);
		getContentPane().add(jSeparator1);
		jSeparator1.setBounds(0, 331, 399, 10);
		
		listado = new ArrayList<Integer>();
		
		cmdGenerar.addMouseListener(new MouseAdapter() {
			
			public void mouseClicked(MouseEvent e){
				cmdGenerarMouseClicked(e);
			}
		});
		cmdSalir.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e){
				System.exit(DISPOSE_ON_CLOSE);
			}
		});

		pack();
	}// </editor-fold>

	protected void cmdGenerarMouseClicked(MouseEvent e) {
		datosTabla.setRowCount(0);
		int resultado = 0;
		int cuantos = 0;
		
		int limiteInferior = Integer.parseInt(txtLimiteInferior.getText());
		int limiteSuperior = Integer.parseInt(txtLimiteSuperior.getText());
		int cantidadNumeros = Integer.parseInt(txtCantidadNumeros.getText());
		
		generador = new Generador(limiteInferior,limiteSuperior);
		
		//que tan grande debe ser el arreglo para meter todos los números sorteados
		cuantos = limiteSuperior - limiteInferior;
		frecuencia = new int[cuantos+1];
		
		//sorteo tantas veces como cantidad de números indique
		for (int i = 0; i < cantidadNumeros; i++) {
			resultado = generador.generar();
			//agrego el resultado a la tabla
			datosTabla.addRow(new Integer[]{i,resultado});
			listado.add(resultado);
			
			//sumo frecuencia en un array por ejemplo al numero que salio le resto
			//el número inferior así me da un índice que se corresponda con el tamaño del arreglo
			//y sumo la cantidad de veces que salio dicho numero
			//limite inferior 10 limite superior 20 cantidad números 6
			//frecuencia[11-10]++ , al numero 11 lo agrego en la posición 1 y sumo 1
			//a la cantidad de veces que salio el numero 11
			frecuencia[resultado-limiteInferior]++;
		}
		System.out.println(listado.toString());
		for (int i = 0; i < frecuencia.length; i++) {
			//para imprimir debo sumarle el limite inferior para saber
			//de que número estamos hablando
			System.out.println("El numero: " + (i + limiteInferior)  + " Salio: " + frecuencia[i] + " veces");
		}
		System.out.println();
	}

	private javax.swing.JButton cmdGenerar;
	private javax.swing.JButton cmdSalir;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JSeparator jSeparator1;
	private javax.swing.JTable tablaDatos;
	private javax.swing.JTextField txtCantidadNumeros;
	private javax.swing.JTextField txtLimiteInferior;
	private javax.swing.JTextField txtLimiteSuperior;
	
	private Generador generador;
	private DefaultTableModel datosTabla;
	private ArrayList<Integer> listado;
	private int[] frecuencia;;

}
